package com.example.myspringai;

import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OllamaConfig {

    @Bean
    public OllamaChatModel ollamaChatModelGemma() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("gemma2:latest");

        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelLlama() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("llama3.1:latest");

        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelMistral() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("mistral:latest");

        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelQwen() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("qwen2:7b");
        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelLlamaUnsecure() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("dagbs/meta-llama-3.1-8b-instruct-abliterated:latest");
        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelLlamaGuard() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("xe/llamaguard3:latest");
        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelJais() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("salmatrafi/acegpt:7b");
        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelAya() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("aya:latest");
        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

    @Bean
    public OllamaChatModel ollamaChatModelSilma() {
        OllamaApi ollamaApi = new OllamaApi("http://jxfu18071862.vicp.fun:17359/");
        OllamaOptions ollamaOptions = OllamaOptions.create().withModel("0ssamaak0/silma-v1:latest");
        return new OllamaChatModel(ollamaApi).withDefaultOptions(ollamaOptions);
    }

}
